RCS "$Id: Eval.sig,v 1.1 1997/10/12 00:12:59 pxs Exp $";
signature EVAL =
sig
  structure Value : VALUE_PROTECTED
  type evaluation
  val emptyEvaluation : unit -> evaluation
  val evaluate : evaluation -> Value.valueExp -> Value.value
  val filterEvaluation : (evaluation * Value.symbol list) -> evaluation option
  val evaluationString : evaluation -> string
  val evaluationEq : evaluation * evaluation -> bool
  val update : evaluation -> (Value.symbol * Value.valueSymbol) -> evaluation
  (* first takes precedence *)
  val combineEvaluations : evaluation * evaluation -> evaluation     
  val negate : evaluation -> evaluation (* same fvs, complementary values *)
  val constrainEvaluation : evaluation * Value.constraint -> evaluation
  val newSymbolFor : evaluation -> Value.symbol
end
